package dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import beans.UsuarioBean;
import hibernate.HibernateUtil;

public class HibernateUsuarioDAO 
{
	private static HibernateUsuarioDAO instancia = null;
	private static SessionFactory sf = null;
	
	public static HibernateUsuarioDAO getInstancia()
	{
		if(instancia == null)
		{
			sf = HibernateUtil.getSessionFactory();
			instancia = new HibernateUsuarioDAO();
		} 
		return instancia;
	}

	@SuppressWarnings("unchecked")
	public UsuarioBean login(UsuarioBean usuarioBean)
	{
		Session session = sf.openSession();
		Query query = session.createQuery("from Usuario  WHERE u.username = :username and u.password = :password");
		query.setParameter("username", usuarioBean.getUsername());
		query.setParameter("password", usuarioBean.getPassword());
		List<UsuarioBean> usuarios = query.list();
		session.close();
		
		if(!usuarios.isEmpty())
		{
			return usuarios.get(0);
		}
		else
		{
			return null;
		}
		
	}

	public UsuarioBean crearUsuario(UsuarioBean usuario) 
	{
		Session session = sf.openSession();
		session.beginTransaction();
		session.persist(usuario);
		session.getTransaction().commit();
		session.close();		
		return usuario;
	}
	
	@SuppressWarnings("unchecked")
	public List<UsuarioBean> obtenerUsuarios()
	{
		Session session = sf.openSession();
		session.beginTransaction();
		List<UsuarioBean> u = session.createQuery("from Usuario").list();
		session.getTransaction().commit();
		session.close();
		return u;
	}	
	
}
